CRUD অপারেশনস (Create, Read, Update, Delete)

Web Development - এএসপি ডট (ASP.Net) - ডাটাবেজ ইন্টিগ্রেশন (Entity Framework Core) |
3
3

CRUD অপারেশনস (Create, Read, Update, Delete) হল ডেটাবেস ম্যানেজমেন্ট সিস্টেমের মৌলিক কার্যক্রম, যা ডেটাবেসে ডেটা তৈরি, পড়া, আপডেট করা এবং মুছে ফেলার কাজ করে। ASP.Net অ্যাপ্লিকেশনে CRUD অপারেশনগুলো সাধারণত Entity Framework (EF) ব্যবহার করে বাস্তবায়িত করা হয়।

এখানে ASP.Net Core MVC অ্যাপ্লিকেশন ব্যবহার করে CRUD অপারেশনগুলো কিভাবে করা যায় তা ব্যাখ্যা করা হলো।


১. Create (ডেটা তৈরি করা)

Create অপারেশন নতুন ডেটা রেকর্ড তৈরি করতে ব্যবহৃত হয়। একটি ফর্মের মাধ্যমে ব্যবহারকারী ডেটা ইনপুট করে এবং তা ডাটাবেসে সেভ করা হয়।

Controller Method (Create)

public class ProductController : Controller
{
    private readonly ApplicationDbContext _context;

    public ProductController(ApplicationDbContext context)
    {
        _context = context;
    }

    // GET: Product/Create
    public IActionResult Create()
    {
        return View();
    }

    // POST: Product/Create
    [HttpPost]
    [ValidateAntiForgeryToken]
    public async Task<IActionResult> Create([Bind("Id,Name,Price")] Product product)
    {
        if (ModelState.IsValid)
        {
            _context.Add(product);  // Add new product to the context
            await _context.SaveChangesAsync();  // Save changes to the database
            return RedirectToAction(nameof(Index));  // Redirect to the Index action
        }
        return View(product);
    }
}

Create View (Create.cshtml)

@model Product

<h2>Create Product</h2>

<form asp-action="Create" method="post">
    <div class="form-group">
        <label asp-for="Name"></label>
        <input asp-for="Name" class="form-control" />
    </div>
    <div class="form-group">
        <label asp-for="Price"></label>
        <input asp-for="Price" class="form-control" />
    </div>
    <button type="submit" class="btn btn-primary">Create</button>
</form>

২. Read (ডেটা পড়া)

Read অপারেশন ব্যবহারকারীকে ডেটাবেস থেকে ডেটা দেখানোর জন্য ব্যবহৃত হয়। সাধারণত Index অ্যাকশনে ডেটা রিটার্ন করা হয়।

Controller Method (Read)

public async Task<IActionResult> Index()
{
    var products = await _context.Products.ToListAsync();  // Fetch all products from the database
    return View(products);
}

Index View (Index.cshtml)

@model IEnumerable<Product>

<h2>Product List</h2>

<table class="table">
    <thead>
        <tr>
            <th>Name</th>
            <th>Price</th>
            <th>Actions</th>
        </tr>
    </thead>
    <tbody>
        @foreach (var product in Model)
        {
            <tr>
                <td>@product.Name</td>
                <td>@product.Price</td>
                <td>
                    <a href="@Url.Action("Edit", new { id = product.Id })">Edit</a> |
                    <a href="@Url.Action("Delete", new { id = product.Id })">Delete</a>
                </td>
            </tr>
        }
    </tbody>
</table>

৩. Update (ডেটা আপডেট করা)

Update অপারেশন ব্যবহারকারীর ইনপুটের মাধ্যমে ডেটাবেসে থাকা একটি রেকর্ড পরিবর্তন করতে ব্যবহৃত হয়।

Controller Method (Update)

// GET: Product/Edit/5
public async Task<IActionResult> Edit(int? id)
{
    if (id == null)
    {
        return NotFound();
    }

    var product = await _context.Products.FindAsync(id);  // Find the product by id
    if (product == null)
    {
        return NotFound();
    }
    return View(product);
}

// POST: Product/Edit/5
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Edit(int id, [Bind("Id,Name,Price")] Product product)
{
    if (id != product.Id)
    {
        return NotFound();
    }

    if (ModelState.IsValid)
    {
        try
        {
            _context.Update(product);  // Update the product in the context
            await _context.SaveChangesAsync();  // Save changes to the database
        }
        catch (DbUpdateConcurrencyException)
        {
            if (!ProductExists(product.Id))
            {
                return NotFound();
            }
            else
            {
                throw;
            }
        }
        return RedirectToAction(nameof(Index));  // Redirect to Index page
    }
    return View(product);
}

Edit View (Edit.cshtml)

@model Product

<h2>Edit Product</h2>

<form asp-action="Edit">
    <div class="form-group">
        <label asp-for="Name"></label>
        <input asp-for="Name" class="form-control" />
    </div>
    <div class="form-group">
        <label asp-for="Price"></label>
        <input asp-for="Price" class="form-control" />
    </div>
    <button type="submit" class="btn btn-primary">Update</button>
</form>

৪. Delete (ডেটা মুছে ফেলা)

Delete অপারেশন ব্যবহারকারীর থেকে একটি নিশ্চিতকরণের পর ডেটাবেস থেকে একটি রেকর্ড মুছে ফেলে।

Controller Method (Delete)

// GET: Product/Delete/5
public async Task<IActionResult> Delete(int? id)
{
    if (id == null)
    {
        return NotFound();
    }

    var product = await _context.Products
        .FirstOrDefaultAsync(m => m.Id == id);  // Find the product by id
    if (product == null)
    {
        return NotFound();
    }

    return View(product);
}

// POST: Product/Delete/5
[HttpPost, ActionName("Delete")]
[ValidateAntiForgeryToken]
public async Task<IActionResult> DeleteConfirmed(int id)
{
    var product = await _context.Products.FindAsync(id);  // Find the product
    _context.Products.Remove(product);  // Remove the product
    await _context.SaveChangesAsync();  // Save changes to the database
    return RedirectToAction(nameof(Index));  // Redirect to Index page
}

Delete View (Delete.cshtml)

@model Product

<h2>Delete Product</h2>

<h3>Are you sure you want to delete this product?</h3>

<div>
    <h4>@Model.Name</h4>
    <p>Price: @Model.Price</p>
</div>

<form asp-action="DeleteConfirmed">
    <button type="submit" class="btn btn-danger">Delete</button>
    <a href="@Url.Action("Index")" class="btn btn-secondary">Cancel</a>
</form>

সারসংক্ষেপ

ASP.Net Core MVC অ্যাপ্লিকেশনে CRUD অপারেশনগুলি খুব সহজেই Entity Framework Core এর মাধ্যমে বাস্তবায়ন করা যায়। এই প্রক্রিয়াটি Create, Read, Update, এবং Delete অপারেশনগুলি পরিচালনা করতে সাহায্য করে, যা ডেটাবেসে রেকর্ড সংরক্ষণ, প্রদর্শন, পরিবর্তন, এবং মুছে ফেলার কাজ করে।

Content added By
Promotion